//#include <iostream>
//using namespace std;


//class Person
//{
//public:
//	virtual void funcA()
//	{
//		cout << "Person::funcA()" << endl;
//	}
//
//	virtual void funcB()
//	{
//		cout << "Person::funcB()" << endl;
//
//	}
//	virtual void funcC()
//	{
//		cout << "Person::funcC()" << endl;
//
//	}
//
//private:
//	int _a;
//};
//
//
//
//class Student :public Person
//{
//public:
//	virtual void funcA()
//	{
//		cout << "Student::funcA()" << endl;
//	}
//
//	virtual void funcB()
//	{
//		cout << "Student::funcB()" << endl;
//
//	}
//
//	virtual void funcD()
//	{
//		cout << "Student::funcD()" << endl;
//
//	}
//
//	virtual void funcE()
//	{
//		cout << "Student::funcE()" << endl;
//
//	}
//private:
//	int _b;
//};
//
//void test1()
//{
//	Person p;
//	Student s;
//	Person* pp = &p;
//	pp->funcA();
//
//	pp = &s;
//	pp->funcA();
//	pp->funcC();
//}
//typedef void(*PTR)();
//
//void show(PTR* vTable)
//{
//	for (int i = 0; vTable[i] != nullptr; i++)
//	{
//		printf("[%d] : &p  ", i, vTable[i]);
//		vTable[i]();
//		
//
//	}
//	cout << endl;
//}
//
//int main()
//{
//	Person p;
//	Student s;
//	PTR* v1 = (PTR*)*((int*)&p);
//	show(v1);
//
//	PTR* v2 = (PTR*)(*(int*)&s);
//	show(v2);
//
//	//test1();
//	return 0;
//}